package org.example.controller;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Date;
import java.util.List;


//定义表现层控制器bean
@Controller
@RequestMapping("/user")
public class UserController {

//    第一种传递方式
//    @RequestMapping("/commonParam")
//    @ResponseBody
//    public String save(String username, int age) {
//        System.out.println("普通参数传递 username ==> " + username + ",," + age);
//        return "userController";
//    }

//    第二种传递方式
//    @RequestMapping("/commonParam")
//    @ResponseBody
//    public String save(@RequestParam("name") String username, @RequestParam("age") int age) {
//        System.out.println("普通参数传递 username ==> " + username + ",," + age);
//        return "userController";
//    }

//  第三种传递方式实体类传递
//    @RequestMapping("/commonParam")
//    @ResponseBody
//    public String save(Sysrole sysrole) {
//        System.out.println("普通参数传递 username ==> "+sysrole);
//        return "userController";
//    }

//  使用拼接传递数组
//    @RequestMapping("/arrayParam")
//    @ResponseBody
//    public String save(@RequestParam List<String> likes) {
//        System.out.println("普通参数传递 username ==> "+ likes);
//        return "userController";
//    }

//    发送json接受数据
//    @RequestMapping("/arrayParam")
//    @ResponseBody
//    public String save(
//            @RequestBody List<String> likes
//            ) {
//        System.out.println("普通参数传递 username ==> "+ likes);
//        return "userController";
//    }

    /**
     * @RequestBody 将请求中请求体所包含的数据传递给请求参数，此注解一个处理器方法只能使用一次
     */
    @RequestMapping("/arrayParam")
    @ResponseBody
    public String save(@RequestBody String likes) {
        System.out.println("普通参数传递 username ==> " + likes);
        return "userController";
    }

//    @RequestMapping("/dataParam")
//    @ResponseBody
//    public String dataParam(Date date,Date date1) {
//        System.out.println("参数传递 date ==> "+date);
//        System.out.println("参数传递 date ==> "+date1);
//        return "{'module':'data param'}";
//    }

    /**
     *
     * SpringMVC默认支持的字符串转日期的格式为yyyy/MM/dd,用其他格式会报错
     * 需要用其他格式 @DateTimeFormat(pattern = "yyyy-MM-dd") Date date1
     * */
    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(Date date,
                           @DateTimeFormat(pattern = "yyyy-MM-dd") Date date1,
                           @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2) {
        System.out.println("参数传递 date ==> " + date);
        System.out.println("参数传递 date ==> " + date1);
        System.out.println("参数传递 date ==> " + date2);
        return "{'module':'data param'}";
    }
}
